여덟 퀸 문제
최근 수정 시각: (5년 전)
1. 개요 [편집]
1.1. 해답 [편집]
파일:8퀸 문제 해법.png
위와 같이 12개의 기본 형태가 있으며, 이를 근본해라고 한다. 대칭인 마지막 패턴(4개)을 제외하고 각 8개를 대칭이동으로 만들 수 있으므로, 여덟 퀸의 경우 총 92개의 해가 있다.
위와 같이 12개의 기본 형태가 있으며, 이를 근본해라고 한다. 대칭인 마지막 패턴(4개)을 제외하고 각 8개를 대칭이동으로 만들 수 있으므로, 여덟 퀸의 경우 총 92개의 해가 있다.
2. n-Queens 문제 [편집]
n-Queens 문제는 n개의 여왕말을 nxn 체스판에 서로 위협하지 않도록 배치하는 문제로서, 여덟 퀸 문제를 일반화한 알고리즘 문제다. 일반화된 n-Queens 문제에 대한 해법으로는, n이 2, 3인 경우를 제외하고 모든 자연수에서 해를 찾을 수 있다.
2.1. n-Queens 문제의 해 [편집]
2.2. n-Queens 문제와 백트래킹 방법 [편집]
n-Queens 문제는 알고리즘 설계 기법 중 하나인 백트래킹 방법으로 해결한다. 아래는 백트래킹으로 n-Queens 문제를 해결하는 파이썬 구현 소스 코드이다.
n-Queens 문제를 백트래킹으로 푸는 방법은 이 영상[1]에 자세히 나오고, 위 소스 코드 구현에 대한 설명은 이 영상[2]에 나와 있다.
def n_queens (i, col):
n = len(col) -1
if (promising(col, i)):
if (i == n):
print(col[1: n + 1])
else:
for j in range(1, n+1)
col[i + 1] = j
n_queens(col, i + 1)
def promising (i, col):
k = 1
flag = True
while (k < i and flag):
if (col[i] == col[k] or abs(col[i] - col[k]) == (i - k)):
flag = False
k += 1
return flagn-Queens 문제를 백트래킹으로 푸는 방법은 이 영상[1]에 자세히 나오고, 위 소스 코드 구현에 대한 설명은 이 영상[2]에 나와 있다.
라이선스를 별도로 명시하지 않은 문서는 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다.
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.
문서의 기여자는 역사 탭에서 확인할 수 있습니다.
접두어의 N: - 나무위키 사용자, R: - 리그베다 위키의 사용자를 뜻합니다.
자세한 사항은 나무위키에서 동일한 문서의 역사를 참고하시기 바랍니다.